1. Field of the Invention
This invention relates to circuits for resolving address conflicts between devices coupled to a local bus of a computer.
2. Description of Related Art
Small computers often include cards and other devices that attach to a local bus inside the computer. For example, in an IBM personal computer or compatible computer (PC), plug-in cards communicate with a mother board of the PC through standardized local buses, such as industry standard architecture (ISA), extended industry standard architecture (EISA), peripheral component interconnect (PCI), and video electronic standard association (VESA) buses. Each type of local bus has unique protocols and data transfer capabilities.
FIG. 1 shows a host computer 100 with a mother board 110. Mother board 110 typically contains a Central Processing Unit (CPU), main memory, and the essential elements needed for operation of computer 100. Local bus 120 allows mother board 110 to communicate with devices 121-123. Devices 121-123 are typically circuit boards or cards inserted into slots attached to local bus 120. Some of typical devices attached to a local bus include video cards, modems, disc controllers, and SCSI adapters such as 123. Instead of a single local bus 120 as shown in FIG. 1, a computer may have two or more different local buses, for example a VESA bus for devices that require a high data transfer rate and an ISA bus for slower devices.
Each device 121-123 on local bus 120 has input/output (I/O) port addresses which are determined by circuitry in the device 121, 122, or 123. Each device 121-123 responds to address signals on local bus 120 which correspond to any of the I/O port addresses used by the device. For example, each device coupled to a VESA bus occupies sixteen consecutive bytes of the computers address space starting with a base I/O port address, and each device responds to any of the sixteen addresses.
Because the total amount of address space available for devices connected to all the local buses is limited, two devices sometimes try to use the same addresses and a conflict arises. Conflicting addresses are typically discovered after devices are connected to local bus 120 and after computer 100 crashes. Computer users are then left to determine what happened and how to correct the problem.
Typically, devices 121-123 have jumper wires or switches which permit a user to change a device's base I/O port address to avoid or resolve a conflict. However, changing device addresses requires knowledge of devices 121-123 coupled to bus 120 and devices connected to other local buses if there are any. Users must identify at least one of the two or more devices that use the same I/O port address. Usually, the last device added to the local bus will be the problem, but if several devices are added at one time, identifying the conflicting devices may be difficult. Once a device is identified, the base I/O port address must be changed to an address that is not used by any other devices on any of the local bus. The user either determines the addresses of the other devices or keeps changing the jumpers or switches until an I/O port address is found that works.
Many computer users are hesitant to change switches or jumper wires on a device inside a computer. Accordingly, a more user friendly way of resolving I/O port address conflicts is needed. The resolution should not require the user to know the I/O port addresses of devices and should require minimal changing of switches or jumpers.